linux中结合sed和grep的全局文本替换示例 | 您所在的位置:网站首页 › linux shell命令替换 › linux中结合sed和grep的全局文本替换示例 |
目录 基本语法 实战例 注意点 基本语法sed -i "s/oldstring/newstring/g" `grep oldstring -rl path` -i 表示inplace edit,就地修改文件 -r 表示递归式地搜索子目录 -l 表示输出匹配的文件名 oldstring:原字符串 newstring:要替换成为的新字符串 path:路径,可以是一个文件路径,也可以是一个目录路径 注意:grep命令前后是一对“`”,不是单引号,是键盘左上角的那个! 实战例在myfolder有两组字符串需要替换: (1) RTSEL(2'b01) --> RTSEL(2'b00); (2) WTSEL(2'b01) --> WTSEL(2'b00); 首先,查询一下RTSEL的存在状况: >> grep -rn "RTSEL" myfolder myfolder/APERTURE_DATA_PREPARE.sv:73: .RTSEL(2'b01), myfolder/APERTURE_DATA_PREPARE.sv:109: .RTSEL(2'b01), myfolder/APERTURE_DATA_PREPARE.sv:145: .RTSEL(2'b01), myfolder/CHROMA_DATA_PREPARE.sv:74: .RTSEL(2'b01), myfolder/CHROMA_DATA_PREPARE.sv:111: .RTSEL(2'b01), myfolder/CHROMA_DATA_PREPARE.sv:148: .RTSEL(2'b01), myfolder/CHROMA_DATA_PREPARE.sv:185: .RTSEL(2'b01), myfolder/LUMA_GEN.sv:85: .RTSEL(2'b01), myfolder/LUMA_GEN.sv:122: .RTSEL(2'b01), myfolder/LUMA_GEN.sv:159: .RTSEL(2'b01), myfolder/LUMA_GEN.sv:196: .RTSEL(2'b01), 然后,执行sed + grep命令进行替换,并再次用grep搜索确认: >> sed -i "s/WTSEL(2'b01)/WTSEL(2'b00)/g" `grep "WTSEL(2'b01)" -rl myfolder` >> grep -rn "RTSEL" myfolder myfolder/APERTURE_DATA_PREPARE.sv:73: .RTSEL(2'b00), myfolder/APERTURE_DATA_PREPARE.sv:109: .RTSEL(2'b00), myfolder/APERTURE_DATA_PREPARE.sv:145: .RTSEL(2'b00), myfolder/CHROMA_DATA_PREPARE.sv:74: .RTSEL(2'b00), myfolder/CHROMA_DATA_PREPARE.sv:111: .RTSEL(2'b00), myfolder/CHROMA_DATA_PREPARE.sv:148: .RTSEL(2'b00), myfolder/CHROMA_DATA_PREPARE.sv:185: .RTSEL(2'b00), myfolder/LUMA_GEN.sv:85: .RTSEL(2'b00), myfolder/LUMA_GEN.sv:122: .RTSEL(2'b00), myfolder/LUMA_GEN.sv:159: .RTSEL(2'b00), myfolder/LUMA_GEN.sv:196: .RTSEL(2'b00), 对WTSEL也依葫芦画瓢: >> sed -i "s/WTSEL(2'b01)/WTSEL(2'b00)/g" `grep "WTSEL(2'b01)" -rl myfolder` >> grep -rn "WTSEL" myfolder myfolder/APERTURE_DATA_PREPARE.sv:74: .WTSEL(2'b00), myfolder/APERTURE_DATA_PREPARE.sv:110: .WTSEL(2'b00), myfolder/APERTURE_DATA_PREPARE.sv:146: .WTSEL(2'b00), myfolder/CHROMA_DATA_PREPARE.sv:75: .WTSEL(2'b00), myfolder/CHROMA_DATA_PREPARE.sv:112: .WTSEL(2'b00), myfolder/CHROMA_DATA_PREPARE.sv:149: .WTSEL(2'b00), myfolder/CHROMA_DATA_PREPARE.sv:186: .WTSEL(2'b00), myfolder/LUMA_GEN.sv:86: .WTSEL(2'b00), myfolder/LUMA_GEN.sv:123: .WTSEL(2'b00), myfolder/LUMA_GEN.sv:160: .WTSEL(2'b00), myfolder/LUMA_GEN.sv:197: .WTSEL(2'b00), 确实蛮灵嘎。。。 注意点在grep命令的字符串要用双引号“”围起来,但是在sed命令中的oldstring和newstring不需要双引号围起来!
|
CopyRight 2018-2019 实验室设备网 版权所有 |